Storage array interconnection fabric using a torus topology

ABSTRACT

A storage array interconnection fabric may be configured using a torus topology. A storage system including a path-redundant torus interconnection fabric is coupled to a plurality of nodes. The torus interconnection fabric may be configured to connect the plurality of nodes in an array including N rows and M columns, where N and M are positive integers. The array may be configured such that a first node in a first row of the N rows is connected to a second node in the first row and a first node in a first column of the M columns is connected to a second node in the first column. Also an ending node in the first row is connected to the first node in the first row and an ending node in the first column is connected to the first node in the first column. In addition, a first portion of the plurality of nodes is configured to communicate with a plurality of storage devices such as disk drives.

BACKGROUND OF THE INVENTION

[0001] 1. Field of the Invention

[0002] This invention relates to data storage systems and, moreparticularly, to storage array interconnection topology.

[0003] 2. Description of the Related Art

[0004] Computer systems are placing an ever-increasing demand on datastorage systems. In many of the data storage systems in use today, datastorage arrays are used. The interconnection solutions for many largestorage arrays are based on bus architectures such as, for example,small computer system interconnect (SCSI) or fibre channel (FC). Inthese architectures, multiple storage devices such as disks, may share asingle set of wires, or a loop in the case of FC, for data transfers.

[0005] Such architectures may be limited in terms of performance andfault tolerance. Since all the devices share a common set of wires, onlyone data transfer may take place at any given time, regardless ofwhether or not all the devices have data ready for transfer. Also, if astorage device fails, it may be possible for that device to render theremaining devices inaccessible by corrupting the bus. Additionally, insystems that use a single controller on each bus, a controller failuremay leave all the devices on its bus inaccessible.

[0006] There are several existing solutions available, which are brieflydescribed below. One solution is to divide the devices into multiplesubsets utilizing multiple independent buses for added performance.Another solution suggests connecting dual buses and controllers to eachdevice to provide path fail-over capability, as in a dual loop FCarchitecture. An additional solution may have multiple controllersconnected to each bus, thus providing a controller fail-over mechanism.

[0007] In a large storage array, component failures may be expected tobe fairly frequent. Because of the higher number of components in asystem, the probability that a component will fail at any given time ishigher, and accordingly, the mean time between failures (MTBF) for thesystem is lower. However, the above conventional solutions may not beadequate for such a system. To illustrate, in the first solutiondescribed above, the independent buses may ease the bandwidth constraintto some degree, but the devices on each bus may still be vulnerable to asingle controller failure or a bus failure. In the second solution, asingle malfunctioning device may still potentially render all of thebuses connected to it, and possibly the rest of the system,inaccessible. This same failure mechanism may also affect the thirdsolution, since the presence of two controllers does not prevent thecase where a single device failure may force the bus to some randomstate.

SUMMARY

[0008] Various embodiments of a storage array using a torusinterconnection topology are disclosed. In one embodiment, a storagesystem including a path-redundant torus interconnection fabric iscoupled to a plurality of nodes. The torus interconnection fabric may beconfigured to connect the plurality of nodes in an array including Nrows and M columns, where N and M are positive integers. The array maybe configured such that a first node in a first row of the N rows isconnected to a second node in the first row and a first node in a firstcolumn of the M columns is connected to a second node in the firstcolumn. Also an ending node in the first row is connected to the firstnode in the first row and an ending node in the first column isconnected to the first node in the first column. In addition, a firstportion of the plurality of nodes is configured to communicate with aplurality of storage devices such as disk drives. In other embodiments,the storage devices may be random access memories configured as cachememories or tape drives. A second portion of the plurality of nodes maybe configured to communicate with a host.

[0009] In some embodiments, each node of the plurality of nodes may beconfigured to communicate with each other node of the plurality of nodesby routing messages bi-directionally. In an alterative embodiment, eachnode of the plurality of nodes is configured to communicate with eachother node of the plurality of nodes by routing messagesuni-directionally.

[0010] In an embodiment, a storage system including a path-redundanttorus interconnection fabric is coupled to a plurality of nodes. Thetorus interconnection fabric is configured to logically connect theplurality of nodes in an array comprising a plurality of node rows and aplurality of node columns. The torus interconnection fabric is alsoconfigured to provide a communication path between each node in thearray and at least four neighboring nodes. For each node at an end ofone of the node rows or one of the node columns, the torusinterconnection fabric is configured to provide a communication path toa node at the opposite end of the respective node row or node column.Each one of a first portion of the plurality of nodes comprises at leastone mass storage device.

[0011] In an embodiment, a method of interconnecting a plurality ofnodes in an array including N rows and M columns using a torusinterconnection fabric, where N and M are positive integers, using apath-redundant torus interconnection fabric is recited. In oneembodiment, a first node in a first row of the N rows is connected to asecond node in the first row and a first node in a first column of the Mcolumns is connected to a second node in the first column. Additionally,an ending node in the first row is connected to the first node in thefirst row and an ending node in the first column is connected to thefirst node in the first column. A first portion of the plurality ofnodes is configured to communicate with a plurality of storage devices.

[0012] In an embodiment, a method for routing communications within astorage system comprising an array of nodes interconnected by a torusfabric is recited. In one embodiment, a communication from a source nodeis sent to a destination node using a first communication path. Afailure in the first communication path may be detected, preventing thecommunication from reaching the destination node. The communication fromthe source node is resent to the destination node using a secondcommunication path independent from the first communication path. Thesecond communication path wraps either from an end of a node row of thearray to the opposite end of the node row or from an end of a nodecolumn of the array to the opposite end of the node column.

BRIEF DESCRIPTION OF THE DRAWINGS

[0013]FIG. 1 is a diagram of one embodiment of a torus interconnectiontopology.

[0014]FIG. 2 is a diagram illustrating routing in a torusinterconnection topology, according to one embodiment;

[0015]FIG. 3 is another diagram of routing in a torus interconnectiontopology, according to one embodiment;

[0016]FIG. 4 is a diagram of one embodiment of a uni-directional torusinterconnection topology;

[0017]FIG. 5 is a block diagram of one embodiment of a node of a torusinterconnection topology;

[0018]FIG. 6 is a diagram of one embodiment of a system configurationusing a torus interconnection topology;

[0019]FIG. 7A and FIG. 7B illustrate a flow diagram of one routingscheme in a bi-directional torus interconnection topology, according toone embodiment; and

[0020]FIG. 8 is a flow diagram of a method for routing communicationswithin a torus interconnect fabric.

[0021] While the invention is susceptible to various modifications andalternative forms, specific embodiments thereof are shown by way ofexample in the drawings and will herein be described in detail. Itshould be understood, however, that the drawings and detaileddescription thereto are not intended to limit the invention to theparticular form disclosed, but on the contrary, the intention is tocover all modifications, equivalents and alternatives falling within thespirit and scope of the present invention as defined by the appendedclaims.

DETAILED DESCRIPTION OF EMBODIMENTS

[0022] Turning now to FIG. 1, a diagram of one embodiment of a torusinterconnection topology is shown. A torus topology 50 uses atwo-dimensional (2-D) array topology. However, as FIG. 1 illustrates,the beginning nodes of each row and column are connected to therespective endpoints of each row and column. For example, if the 2-Darray is an N by M array, where N and M are both positive integers, thenthe first node in row one would be connected to the last node in rowone, in addition to all the other nodes neighboring the first node.Likewise, the top node in column 1 is connected to the bottom node incolumn 1 in addition to all the other nodes neighboring the top node.The remaining nodes are connected in similar fashion such that everynode in the fabric of torus 50 is connected to its four neighboring fournodes. It is noted that torus 50 is shown as a flat two-dimensionalarray with longer connections between the endpoints. These may belogical connections and the physical layout of the nodes may bedifferent. For example, each row may be physically oriented in the shapeof a ring, such that the distance from the last node to the first nodemay be nearly the same as the distance between all the other nodes andlikewise for the columns.

[0023] The level of interconnection described above means that each nodehas four ports with which to communicate to the other nodes. In oneembodiment, each of the four ports is a bi-directional port, thusallowing both inputs and outputs from each neighbor. In an alternativeembodiment, each of the four ports is a uni-directional port, thusallowing two inputs and two outputs. Thus, torus topology 50 may providea richly path redundant interconnection fabric for a storage devicesystem.

[0024] Although the above torus topology 50 is described using atwo-dimensional array, it is contemplated that this same fabric may beextended to include a multi-dimensional array beyond two dimensions (notshown). One embodiment of a three dimensional array may include severaltwo-dimensional arrays “stacked” or layered such that each node now hassix neighboring nodes instead of four and each layer is connectedtogether using the two additional ports.

[0025] Turning now to FIG. 2, a diagram of a first routing scheme usingone embodiment of a torus interconnection topology is shown. The torustopology 50 of FIG. 1 is shown here with some of the interconnectionsnot shown for clarity. In torus 50, one node is labeled 2,2 and one nodeis labeled 3,3. These locations are described in terms of their positionin the N by M array described in FIG. 1, such that a location 2,2describes a node located at the intersection of the second row andsecond column. For ease of describing this embodiment, the origin oftorus 50 of FIG. 3 is located at the upper left corner and moving to theright means going in a positive M direction, and going down means goingin a positive N direction. It is noted however, that in a torusinterconnection fabric any point may be chosen as a zero referencepoint, since all points are interconnected.

[0026] In torus 50, each node may be capable of communicating with everyother node in torus 50. Routing communications between nodes may beaccomplished in one embodiment using a routing in which the coordinatesof a sending node and a receiving node are specified. Then the route maybe calculated by subtracting one from the other. For example, a node atlocation 2,2 is shown communicating with a node at location 3,3. Thus,(3,3)−(2,2)=(1,1); therefore, to get to 3,3 from 2,2 requires a singlehope in the positive N direction followed by a single hop in thepositive M direction. Alternatively, to get to 3,3 from 2,2 requires asingle hop in the positive M direction followed by a single hop in thepositive N direction. The actual path specification may be computed bythe sender, or it may be deduced by the intermediate routing nodesthrough comparing the message destination address with their own. Thisrouting scheme may result in “L” shaped paths. Even in such a simplescheme, there may always be at least two completely independent pathsavailable between two nodes.

[0027] In another embodiment, manhattan-style routing may be employed inwhich routes may switch between X and Y dimensions more than once (e.g.zig-zag as opposed to L route). Such a routing scheme may provide moreflexibility for circumventing faults in the fabric. The zig-zag routemay be computed on-the-fly by the sender, for example, by randomlymaking a turn in the route, but always in a direction that brings themessage closer to the destination.

[0028] Referring to FIG. 3, a diagram of a another routing schemeaccording to one embodiment for a torus interconnection topology isshown. The torus topology 50 of FIG. 1 is shown here with some of theinterconnections not shown for clarity. In torus 50, one node is labeled2,2 and one node is labeled 3,3. In one embodiment, there may be fourcompletely independent paths that may be defined for each pair of nodes.

[0029] In FIG. 3, to get from node 2,2 to node 3,3 the two pathsdescribed in FIG. 2 are shown and, in addition, two more independentpaths are described. From 2,2, a message may be routed to the left twonodes in a negative M direction to a node at the end of the same row.Then down one node in a positive N direction, then one node in thenegative M direction. Alternatively, from 2,2 a message may be routed uptwo nodes in a negative N direction to the node at the end of the samecolumn. Then right one node in a positive M direction followed by up onenode in a negative N direction. In this routing scheme, the routes mayswitch from N to M direction and M to N direction more than one time.Typically, each change of direction is in a direction closer to thedestination. These changes of direction may be calculated on the fly byany sending node. Thus far, the nodes have been described in a genericsense only to establish a few examples of the routing through torus 50.Four independent paths may be available to and from each node.

[0030] In one embodiment, the sender may maintain a small routing tablefor each of its destination nodes. Using such a table, four completelyindependent paths may always be defined between each pair of nodes. Whensuch a static routing table is used, routes do not necessarily alwaysturn in a direction that brings the message closer to the destination,because the route has been pre-defined to reach the destination.

[0031] If some routing paths are infrequently used, faults may developover time on those paths and go undetected or bugs may lay dormant inthe failover mechanism (e.g. failover software) for those paths and goundetected until it is too late and the path is needed. To help avoidsuch undetected conditions, all of the redundant paths may be exercisedroutinely. For example, in an embodiment using a routing table asdescribed above, the sending node may simply cycle through the routingtable for a particular destination when sending each subsequent messageto that destination, thus choosing a different path in the table eachtime.

[0032] It is noted that the failures described above may refer tohardware and/or software faults. However, a failure may also be a simpleinability to deliver a message to a destination node. There may becircumstances that produce a deadlock condition. In such circumstances,to alleviate a deadlock, a message may have to be discarded and theresent.

[0033] It is also contemplated that in some embodiments, more than fouralternative routes may be designed in, where some of those paths may notbe completely independent and may include portions of the fourindependent paths. In another embodiment, the four independent paths maybe retried many times in a round robin scheme, in a persistently brokensystem, for example, prior to declaring a fault. More specifically, theavailable alternate paths may be retried in a pattern. The pattern maybe repeated several times and then if a fault is still present, afailure may be declared.

[0034] Turning now to FIG. 4, a diagram of one embodiment of auni-directional torus interconnection topology is shown. In thisembodiment, a torus 60 of FIG. 4 is similar to torus 50 of FIG. 2 andFIG. 3 in the way the array is connected. However torus 60 of FIG. 4 isa uni-directional torus. This means that each node, although connectedto four neighbors, has only two inputs and two outputs allowing twoindependent paths between each neighbor. Thus, uni-directional torus 60may tolerate at least one failure between two nodes.

[0035] As will be described in more detail below, a torusinterconnection fabric may be used to connect an array of storagedevices.

[0036] Turning now to FIG. 5 a block diagram of one embodiment of a nodeof a torus interconnection topology is shown. A node 100 includes arouting unit 205 coupled to a port controller 210. Routing unit 205 maybe configured to communicate through four ports. In one embodiment, theports may be bi-directional. Thus, routing unit 205 may communicate withfour neighboring nodes allowing four independent routing paths. In analternative embodiment, routing unit 205 may be configured with fouruni-directional ports: two inputs and two outputs. The choice betweenusing bi-directional and uni-directional ports may be influenced bycompeting factors. The unidirectional design may simpler, but it mayonly tolerate a single failure of a neighboring node. The bi-directionaldesign tolerates more failures but may require a more complex routingunit 205. The size of the storage system array may be a determiningfactor, since for a very large number of storage devices, a three-faulttolerant bi-directional torus may become desirable to attain areasonably low MTBF.

[0037] In one embodiment, port controller 210 may be configured tocommunicate with one or more disk drives 220. In another embodiment,port controller 210 may be configured to communicate with one or morerandom access memories 230, such as a cache memory or other type ofmemory and a memory controller. In yet another embodiment, portcontroller 210 may be configured to communicate with a host or RedundantArray of Inexpensive Disks (RAID) controller through a communicationport such as, for example, a peripheral computer interface (PCI) bus ora System I/O port as defined by a specification available from theInfiniBand trade association. It is also contemplated that portcontroller 210 may have all of these functions or any combination of theabove described functions. For example, port controller 210 may beconfigurable for selecting between any one of the different types ofinterfaces described above. Thus, the ability to communicate with and/orcontrol storage devices and communicate to hosts in a torusinterconnection fabric may advantageously increase the reliability,performance and flexibility of large storage systems.

[0038] It is further contemplated that port controller 210 may not haveany devices attached. In such an embodiment, node 100 may simply connectto neighbors through routing port 205. Thus, node 100 may be used in thetorus to increase the number of possible communication paths available.In a torus interconnect, some nodes may be unpopulated with storage orother devices, and used as a routing node to increase the number ofpaths in the torus.

[0039] Referring to FIG. 6, a diagram of one embodiment of a nodeconfiguration of a torus interconnection topology is shown. The torustopology 50 of FIG. 1 is shown here with some of the interconnectionsnot shown for clarity. In torus 50 of FIG. 6 a portion of the nodes areshown comprising storage devices, such as storage devices 620. In oneembodiment storage devices 620 may be disk drives. Another portion ofthe nodes are shown with PCI blocks in them, such as PCI 600. PCI 600 isshown as an exemplary host communication port or line card. It iscontemplated that other embodiments may use other host communicationarchitectures such as System I/O. In this particular embodiment, thestorage devices make up a large portion of torus 50. As mentioned above,many large storage systems use a large number of disks. To reduce costs,inexpensive and smaller disks may be used. However, since more disks mayincrease the failure rate, a highly redundant interconnection fabric,such as torus 50 may be used to provide a reliable overall system.

[0040] Additionally, the multiple paths of the torus interconnect allowfor multiple parallel communications and/or disk operations that may beinitiated over different paths, thereby possibly increasing thebandwidth and performance of the storage system. In a torus storagesystem with multiple controllers/host attachments, many parallel pathsmay exist between the hosts and the disks. Thus, many disk operationsmay be issued at the same time, and many data transfers may take placeconcurrently over the independent paths. This concurrency may provide aperformance advantage and more scalability over bus-based architecturesin which multiple devices must take turns using the same wires/fibre.

[0041] It is noted that other embodiments may use fewer or more storagedevices 620 and fewer or more PCI 600 nodes to facilitate cost andperformance tradeoffs. In addition, and as mentioned above, it iscontemplated that some nodes may be configured to communicate with RAIDcontrollers, and/or cache memory controllers. Thus, depending on theMTBF of the storage devices, a storage system may be designed usingtorus 50 that has a relatively low cost and high reliability andperformance as compared to storage systems using fewer more expensivedisks.

[0042] Collectively, FIG. 7A and FIG. 7B illustrate a flow diagram ofone routing scheme of one embodiment of a bi-directional torusinterconnection topology. A message is sent from a source node atlocation 2,2 to a destination node at 3,3 as shown in FIG. 3. It isnoted that depending on which direction the message is sent from thesource node, determines where in the flow diagram of FIG. 7A and FIG. 7Bthe process begins. Turning now to FIG. 7A and beginning at step 700, amessage is sent. Proceeding to step 701, the message is sent on the pathin the negative N direction. At each node, a new path may be calculatedon-the-fly by the sending node, thereby allowing flexibility incircumventing path faults. Operation proceeds to step 702 checking ifthe message is at the destination node. If the message were at thedestination node, then processing would finish at step 705. In thisexample, this node is not the destination node and so processingcontinues to step 703. The node may decide to change direction randomly,or it may detect a fault on one or more neighboring nodes. If the nodechanges the direction of the message, processing would proceed to step704 and a direction would be chosen. Processing would then continue toone of step 711, 721 or 731. In this example the direction does notchange and so processing continues back to step 701. This is the basicprocess flow and it is repeated for each direction that a message may besent.

[0043] The message is sent to the next node in the negative N direction.Proceeding to step 702, again the node is checked to see if it is thedestination node. If it were the destination node, processing wouldfinish at step 705. In this example, it is not the destination node andso processing continues to step 703. This time, a change of direction ischosen and processing proceeds to step 704. In FIG. 3 the directionchosen is the positive M direction, so in FIG. 7A processing continuesto ‘D’, which is step 731 of FIG. 7B, where the message is sent to thenext node in the positive M direction. Proceed to step 732 and check ifit is the destination node. If it were the destination node, processingwould finish at step 735. In this example, it is not the destinationnode and so processing continues to step 733. Again a change ofdirection is indicated. Proceeding to step 734, a direction is chosenand according to FIG. 3, the message is sent in the negative Ndirection, so FIG. 7B, processing continues to ‘A’, which is step 701 ofFIG. 7A. The message is sent one node in the negative N direction.Proceeding to step 702 and checking for the destination node. In thisexample, this node is the destination node and so processing finishes atstep 705.

[0044] A similar example is shown in FIG. 3, where the message is sentfrom the node at location 2,2 but starting in the negative M direction.In that instance, processing would begin at step 710 of FIG. 7A andcontinue in a similar manner as described in the above example.

[0045] It is noted that while the above descriptions describe messagesbeing sent and received, it is also contemplated that other embodimentsof a torus topology and associated nodes may also be capable ofcommunicating in the context of circuit switching. In such embodiments,instead of passing messages from one node to another, the sender mayopen a channel or connection through one or more nodes to thedestination. This channel may be thought of as a virtual circuit,whereby the sender may dynamically connect itself to a receiver. Thus,the two nodes may then communicate directly as if they had a physicalwire between them. This virtual circuit may be dynamically dismantledlogically at the end of the communication between the sender/receiverpair. Thus, other sender/receiver pairs may use the same physical pathsto construct their own virtual circuit for a communication.

[0046] Turning now to FIG. 8, a method is illustrated for routingcommunications within torus interconnect fabric between nodes in whichfailures may be detected. A communication may be sent from a source nodeto a destination node on a first communication path as indicated at 800.A failure may or may not be detected on the first communication pathfrom the source node as indicated at 802. If no failure is detected thecommunication continues on to the next node as indicated at 816. If afailure is detected the communication may be resent on a secondcommunication path as indicated at 804. Since the torus interconnectfabric provides at least four independent communication paths from eachnode, in one embodiment, this procedure may be repeated in case thesecond communication path and a third communication path fails asindicated at 806 through 814. If a fourth communication path fails thenan error may be declared. Assuming that at least one path from thesource node was working the communication continues to the next node asindicated at 816. If the next node is a destination node then therouting process is complete as indicated at 818, otherwise the routingprocedure may be repeated for the next node.

[0047] Numerous variations and modifications will become apparent tothose skilled in the art once the above disclosure is fully appreciated.It is intended that the following claims be interpreted to embrace allsuch variations and modifications.

What is claimed is:
 1. A storage system comprising: a plurality ofnodes; a path-redundant torus interconnection fabric coupled to saidplurality of nodes; wherein said torus interconnection fabric isconfigured to connect said plurality of nodes in an array including Nrows and M columns, wherein N and M are positive integers; wherein afirst node in a first row of said N rows is connected to a second nodein said first row and a first node in a first column of said M columnsis connected to a second node in said first column; wherein an endingnode in said first row is connected to said first node in said first rowand an ending node in said first column is connected to said first nodein said first column; and wherein a first portion of said plurality ofnodes is configured to communicate with a plurality of storage devices.2. The storage system as recited in claim 1, wherein each node of saidplurality of nodes is configured to communicate with each other node ofsaid plurality of nodes by routing messages bi-directionally.
 3. Thestorage system as recited in claim 1, wherein said storage devices aredisk drives.
 4. The storage system as recited in claim 1, wherein saidstorage devices are random access memories configured as storage cache.5. The storage system as recited in claim 1, wherein said storagedevices are tape drives.
 6. The storage system as recited in claim 1,wherein each node of said plurality of nodes is configured tocommunicate with each other node of said plurality of nodes by routingmessages uni-directionally.
 7. The storage system as recited in claim 1,wherein a second portion of said plurality of nodes is configured tocommunicate with a host.
 8. A method of interconnecting a plurality ofnodes in an array including N rows and M columns using a torusinterconnection fabric, wherein N and M are positive integers, using apath-redundant torus interconnection fabric, said method comprising:connecting a first node in a first row of said N rows to a second nodein said first row; connecting a first node in a first column of said Mcolumns to a second node in said first column; connecting an ending nodein said first row to said first node in said first row; connecting anending node in said first column to said first node in said firstcolumn; a first portion of said plurality of nodes communicating with aplurality of storage devices.
 9. The method as recited in claim 8further comprising each node of said plurality of nodes communicatingwith each other node of said plurality of nodes by routing messagesbi-directionally.
 10. The method as recited in claim 8, wherein saidstorage devices are disk drives.
 11. The method as recited in claim 8,wherein said storage devices are tape drives.
 12. The method as recitedin claim 8, wherein said storage devices are random access memoriesconfigured as cache memories.
 13. The method as recited in claim 8further comprising a second portion of said plurality of nodescommunicating with a host.
 14. The method as recited in claim 8 furthercomprising each node of said plurality of nodes communicating with eachother node of said plurality of nodes by routing messagesuni-directionally.
 15. A storage system comprising: a plurality ofnodes; a path-redundant torus interconnection fabric coupled to saidplurality of nodes; wherein said torus interconnection fabric isconfigured to logically connect said plurality of nodes in an arraycomprising a plurality of node rows and a plurality of node columns;wherein said torus interconnection fabric is configured to provide acommunication path between each node in the array and at least fourneighboring nodes; wherein, for each node at an end of one of said noderows or one of said node columns, said torus interconnection fabric isconfigured to provide a communication path to a node at the opposite endof the respective node row or node column; and wherein each one of afirst portion of said plurality of nodes comprises at least one massstorage device.
 16. The storage system as recited in claim 15, whereinsaid communication paths provided by said torus interconnection fabricbetween each node are bi-directional paths such that each node in thearray may be accessed on at least four independent communication paths.17. The storage system as recited in claim 15, wherein the communicationpaths provided by said torus interconnection fabric between each nodeare uni-directional paths such that communications may be sent to eachnode in the array on at least two independent uni-directionalcommunication paths and communications may be received by each node onat least two independent uni-directional communication paths.
 18. Thestorage system as recited in claim 15, wherein said mass storage devicescomprise disk drives.
 19. The storage system as recited in claim 15,wherein said mass storage devices comprise optical storage devices. 20.The storage system as recited in claim 15, wherein each one of a secondportion of said plurality of nodes comprises random access memoryconfigured as a storage cache.
 21. The storage system as recited inclaim 15, wherein each one of a second portion of said plurality ofnodes comprises a communication interface to a host.
 22. A method forrouting communications within a storage system comprising an array ofnodes interconnected by a torus fabric, the method comprising: sending acommunication from a source node to a destination node using a firstcommunication path; detecting a failure in said first communicationpath; and resending said communication from said source node to saiddestination node using a second communication path independent from saidfirst communication path; wherein said second communication path wrapseither from an end of a node row of the array to the opposite end ofsaid node row or from an end of a node column of the array to theopposite end of said node column.
 23. The method as recited in claim 22,further comprising: detecting a failure in said second communicationpath; and resending said communication from said source node to saiddestination node using a third communication path independent from saidfirst and said second communication paths.
 24. The method as recited inclaim 23, further comprising: detecting a failure in said thirdcommunication path; and resending said communication from said sourcenode to said destination node using a fourth communication pathindependent from said first, said second and said third communicationpaths.
 25. The method as recited in claim 24, wherein said source nodeis located at a logical edge of the array.
 26. The method as recited inclaim 25, wherein said destination node is located at a logical edge ofthe array.
 27. A storage system, comprising: a plurality of nodesconfigured as: a plurality of node rows; and a plurality of nodecolumns; wherein each node in said plurality of nodes is a member of oneof said node rows and one of said node columns; and a torus interconnectfabric configured to provide a communication path between said nodes insaid node rows and said node columns; wherein said torus interconnectfabric is configured to logically connect each node row as a ring of rownodes and each row column as a ring of column nodes, such that each nodeof said plurality of nodes is connected to every other node of saidplurality of nodes by at least four independent communication paths; andwherein each one of a first portion of said plurality of nodes comprisesat least one mass storage device.
 28. The storage system as recited inclaim 27, wherein said communication paths connecting each node of saidplurality of nodes to every other node of said plurality of nodes arebi-directional paths such that each node in the plurality of nodes maybe accessed on at least four independent communication paths.
 29. Thestorage system as recited in claim 27, wherein said communication pathsconnecting each node of said plurality of nodes to every other node ofsaid plurality of nodes are uni-directional paths such thatcommunications may be sent to each node in the plurality of nodes on atleast two independent uni-directional communication paths andcommunications may be received by each node on at least two independentuni-directional communication paths.
 30. The storage system as recitedin claim 27, wherein said mass storage device comprises a disk drive.31. The storage system as recited in claim 27, wherein said mass storagedevice comprises an optical storage device.
 32. The storage system asrecited in claim 27, wherein each one of a second portion of saidplurality of nodes comprises random access memory configured as astorage cache.
 33. The storage system as recited in claim 27, whereineach one of a second portion of said plurality of nodes comprises acommunication interface to a host.